]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
background: Update animations when coming back from suspend
authorFlorian Müllner <fmuellner@gnome.org>
Fri, 21 Oct 2016 12:09:32 +0000 (14:09 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Sun, 30 Oct 2016 20:10:32 +0000 (21:10 +0100)
We currently reload animated backgrounds on timezone changes, but
there are other cases where the time can change unexpectedly and
the background no longer matches the time of day. One case we can
easily handle is when coming back from suspend, so do that.

https://bugzilla.gnome.org/show_bug.cgi?id=773265

js/ui/background.js

index 762c76c6e7b000381fee9e571152901ca391ff11..622a59a6cbffdd711d3b9ed8f4adb39abd82469d 100644 (file)
@@ -102,6 +102,7 @@ const Lang = imports.lang;
 const Meta = imports.gi.Meta;
 const Signals = imports.signals;
 
+const LoginManager = imports.misc.loginManager;
 const Main = imports.ui.main;
 const Params = imports.misc.params;
 const Tweener = imports.ui.tweener;
@@ -254,6 +255,13 @@ const Background = new Lang.Class({
                     this._loadAnimation(this._animation.file);
             }));
 
+        LoginManager.getLoginManager().connect('prepare-for-sleep',
+            (lm, aboutToSuspend) => {
+                if (aboutToSuspend)
+                    return;
+                this._refreshAnimation();
+            });
+
         this._settingsChangedSignalId = this._settings.connect('changed', Lang.bind(this, function() {
                                             this.emit('changed');
                                         }));
@@ -282,10 +290,16 @@ const Background = new Lang.Class({
     },
 
     updateResolution: function() {
-        if (this._animation) {
-            this._removeAnimationTimeout();
-            this._updateAnimation();
-        }
+        if (this._animation)
+            this._refreshAnimation();
+    },
+
+    _refreshAnimation: function() {
+        if (!this._animation)
+            return;
+
+        this._removeAnimationTimeout();
+        this._updateAnimation();
     },
 
     _setLoaded: function() {